package packquienesquien;

import packquienesquien.Personaje.Bool;
import packquienesquien.Personaje.Ojos;
import packquienesquien.Personaje.Pelo;
import packquienesquien.Personaje.Sexo;

public abstract class Jugador {
	
	protected Personaje personaje;
	protected ListaPersonajes tablero;
	protected int id;

	public Jugador(int pId) {
		this.personaje = null;
		this.tablero = new ListaPersonajes();
		this.id = pId;
	}
	
	protected int getId() {
		return this.id;
	}
	
	//puesto a public por las pruebas, es protected.
	public Personaje getPersonaje() {
		return this.personaje;
	}
	//puesto a public por las pruebas, es protected.
	public void setPersonaje(Personaje pPersonaje) {
		this.personaje = pPersonaje;
	}
	//puesto a public por las pruebas, es protected
	public ListaPersonajes getTablero() {
		return this.tablero;
	}
	
	protected void setTablero(ListaPersonajes pTablero) {
		this.tablero = pTablero;
	}
	
	//puesto a public por las pruebas.Realmente es protected
	public void inicializarTablero() {
		ListaPersonajes listaP = this.getTablero();
		Personaje p1 = new Personaje("Samuel", Sexo.HOMBRE, Pelo.CASTANO, Ojos.AZUL, Bool.SI, Bool.NO, Bool.NO);
		Personaje p2 = new Personaje("Pepe", Sexo.HOMBRE, Pelo.RUBIO, Ojos.MARRON, Bool.SI, Bool.NO, Bool.SI);
		Personaje p3 = new Personaje("Pablo", Sexo.HOMBRE, Pelo.PELIRROJO, Ojos.VERDE, Bool.SI, Bool.SI, Bool.NO);
		Personaje p4 = new Personaje("Jorge", Sexo.HOMBRE, Pelo.CASTANO, Ojos.MARRON, Bool.NO, Bool.SI, Bool.SI);
		Personaje p5 = new Personaje("Felipe", Sexo.HOMBRE, Pelo.RUBIO, Ojos.VERDE, Bool.SI, Bool.SI, Bool.SI);
		Personaje p6 = new Personaje("David", Sexo.HOMBRE, Pelo.PELIRROJO, Ojos.AZUL, Bool.NO, Bool.SI, Bool.NO);
		Personaje p7 = new Personaje("Clara", Sexo.MUJER, Pelo.CASTANO, Ojos.VERDE, Bool.NO, Bool.SI, Bool.NO);
		Personaje p8 = new Personaje("Ana", Sexo.MUJER, Pelo.RUBIO, Ojos.AZUL, Bool.NO, Bool.NO, Bool.NO);
		Personaje p9 = new Personaje("Susana", Sexo.MUJER, Pelo.PELIRROJO, Ojos.MARRON, Bool.NO, Bool.SI, Bool.SI);
		Personaje p10 = new Personaje("Maria", Sexo.MUJER, Pelo.CASTANO, Ojos.AZUL, Bool.NO, Bool.NO, Bool.NO);
		Personaje p11 = new Personaje("Carol", Sexo.MUJER, Pelo.RUBIO, Ojos.MARRON, Bool.NO, Bool.SI, Bool.NO);
		Personaje p12 = new Personaje("Rosa", Sexo.MUJER, Pelo.PELIRROJO, Ojos.VERDE, Bool.NO, Bool.SI, Bool.NO);
		listaP.anadirPersonaje(p1);
		listaP.anadirPersonaje(p2);
		listaP.anadirPersonaje(p3);
		listaP.anadirPersonaje(p4);
		listaP.anadirPersonaje(p5);
		listaP.anadirPersonaje(p6);
		listaP.anadirPersonaje(p7);
		listaP.anadirPersonaje(p8);
		listaP.anadirPersonaje(p9);
		listaP.anadirPersonaje(p10);
		listaP.anadirPersonaje(p11);
		listaP.anadirPersonaje(p12);
	}

	protected abstract void pensarPersonaje();
	
	protected abstract void realizarPregunta(Jugador jugadorEnEspera);
	
	protected abstract boolean resolver(Jugador jugadorEnEspera);

	//los siguientes metodos son necesarios para que no de error
	public void responderPreguntaComputer(int atributo, int valor) {
		// TODO Auto-generated method stub
	}

	public String responderPreguntaHumano(int atributo, int valor) {
		return null;
		// TODO Auto-generated method stub	
	}
}